<template>
    <div>
        <h3>- 遍历器（iterator）的 next()方法必须是同步的，只要调用就必须立刻返回值，就必须同步地得到value和done这两个属性</h3>
        <p>next()方法返回的不能是一个 Promise 对象，但是value属性可以，等待返回value值，但是done属性则还是同步产生的</p>
        <h3>- 异步遍历的接口 调用遍历器的next方法，返回的是一个 Promise 对象</h3>
        <p>可以使用then方法指定回调函数，回调函数的参数，则是一个具有value和done两个属性的对象</p>
        <p>对象的异步遍历器接口，部署在Symbol.asyncIterator属性上面，只要这个属性有值，就表示能对这个对象做异步操作</p>
        <h3>- for await...of 遍历异步的 Iterator 接口；对应 for...of循环用于遍历同步的 Iterator 接口</h3>
        <p>要用try...catch捕捉错误；for await...of循环也可以用于同步遍历器</p>
        <h3>- 异步 Generator 函数 async函数与 Generator 函数的结合</h3>
        <pre>
    <code>
        async function* gen() {
            yield 'hello';
        }
        const genObj = gen();
        genObj.next().then(x => console.log(x));
        // { value: 'hello', done: false }
    </code>
        </pre>
        <p>异步 Generator 函数内部，能够同时使用await和yield命令。可以这样理解，await命令用于将外部操作产生的值输入函数内部，yield命令用于将函数内部的值输出。</p>
        <p>如果是一系列按照顺序执行的异步操作（比如读取文件，然后写入新内容，再存入硬盘），可以使用 async 函数；如果是一系列产生相同数据结构的异步操作（比如一行一行读取文件），可以使用异步 Generator 函数。</p>
        <h3>- yield*  yield*语句也可以跟一个异步遍历器。</h3>
        <p>与同步 Generator 函数一样，for await...of循环会展开yield*</p>
    </div>
</template>

<script>
export default {

}
</script>

<style scoped>

</style>